2011-10-12 128 views
-2

我想重现/转换这个JS脚本为PHP脚本,有没有人可以帮助我? 我想我需要在PHP的preg_replace(),我真的不擅长与它:/PHP重现一个JS脚本(转换为PHP脚本)

这是我的js简单的脚本:

wysiwyg_val = $('.wysiwyg textarea').val() 
.replace(/\n/g, "<br>") 
.replace(/<br>/g,'[br]') 
.replace(/\</g,'&lt;') 
.replace(/\>/g,'&gt;') 
.replace(/\{code\}/g, '<pre><code>') 
.replace(/\{\/code\}/g, '</code></pre>') 
.replace(/\{strong\}/g, '<strong>') 
.replace(/\{\/strong\}/g, '</strong>') 
.replace(/\{italic\}/g, '<i>') 
.replace(/\{\/italic\}/g, '</i>') 
.replace(/\{title\}/g, '<h2>') 
.replace(/\{\/title\}/g, '</h2>') 
.replace(/\{subtitle\}/g, '<h3>') 
.replace(/\{\/subtitle\}/g, '</h3>') 
.replace(/\[br\]/g,'<br>'); 

wysiwyg_val,在逃脱之后,通过Ajax传递一个PHP页面,可以把它作为$_POST['text']

回答

3
$wysiwyg_val = 'xyz'; // your WYSIWYG input 

$replacements = array(
    array('/\n/g', "<br>"), 
    array('/<br>/g', '[br]'), 
    array('/\</g','&lt;'), 
    // and so forth. 
); 

foreach ($replacements as $replacement) { 
    $wysiwyg_val = preg_replace($replacement[0], $replacement[1], $wysiwyg_val); 
} 
+0

你认为这是更快然后@queueoverflow代码? – sbaaaang

+1

速度完全一样。但是你会为自己节省很多'$ wysiwyg_val = preg_replace('/ foo/g','bar',$ wysiwyg_val);'线。 – vzwick

+0

它返回一个错误:未知修饰符'g'..为什么? :O – sbaaaang

1
mixed preg_replace (mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]]) 

所以只是做

$subject = $POST['text']; 

$subject = preg_replace($pattern, $replacement, $subject); 
$subject = preg_replace($pattern, $replacement, $subject); 
... 
+0

是否将$模式与我在js中使用的.replace()模式匹配?我的意思是我可以把相同的模式都用于js和php替换? :) – sbaaaang

+0

如果你看vzwick的答案,它似乎是这样。 –

+0

有趣的thx! – sbaaaang