2017-08-16 25 views
1

嗨一个锚标记,我想全部替换“的引文简单引用”,但不替换“”为“非在PHP

Lorem 'ipsum' dolor sit amet, <a href="#">sit amet</a> 

IM做这个$valFieldBody = str_replace('"', "''", $valFieldBody);

但全部替换“我不知道如果我能使用str_replacepreg_replace funcion与像!=<>

消极条件可以请你帮我

感谢

+0

@WiktorStribiżew谢谢你帮我(y) – skycomputer2

+0

@Wiktor现在你已经发布了一个答案,请删除你的评论。 – mickmackusa

回答

2

preg_replace函数的功能使您可以多种组合来代替,在这种情况下,我查找字符串代替只接受空格和字母数字字符(在您的情况下是字符串“ipsum”),可以扩展为其他字符(如果需要)

字符串示例

更新代码:

$text='Lorem "ipsum" dolor sit amet, <a href="#">sit amet</a>'; 
$text = preg_replace('/\"([A-Za-z0-9? ,_-]+)\"(?=[^<>]*(?:<|$))/', "'$1'", $text); 
echo $text; 
//out--> Lorem 'ipsum' dolor sit amet, <a href="#">sit amet</a> 

http://php.net/manual/en/function.preg-replace.php

1

你可以使用一个SKIP-FAIL regex

preg_replace('~<[^>]+>(*SKIP)(*F)|"~', "'", $valFieldBody); 

regex demo

图案的详细资料

  • <[^>]+> - 匹配<,1+字符以外>,然后>
  • (*SKIP)(*F) - 2 PCRE动词省略匹配的文本,使正则表达式引擎搜索下在本次比赛结束后进行比赛
  • | - 或
  • " - 在其他情况下的双引号。