2017-08-16 23 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動詞省略匹配的文本,使正則表達式引擎搜索下在本次比賽結束後進行比賽
  • | - 或
  • " - 在其他情況下的雙引號。