用Preg_Replace替换撇号的麻烦

时间:2011-10-19 14:12:37

标签: php preg-replace

我正在尝试从文本中删除撇号,但它并没有真正起作用。它必须是小事。

$text = preg_replace('/\'/', '', $text);

这就是我现在正在使用的删除它。我做错了什么?

有一系列要删除特殊字符以将其转换为网址并将其存储在我的数据库中。然而,最近出现了一批'在哪里'是。

非常感谢任何帮助。提前谢谢。

6 个答案:

答案 0 :(得分:22)

继续使用str_replace(),它比preg_replace()更快,因为它不使用正则表达式。

$text = str_replace("'", '', $text);

答案 1 :(得分:10)

您可以使用此正则表达式删除撇号

$text = preg_replace('/(\'|&#0*39;)/', '', $text);

也可以在执行html_entity_decode

后使用str_replace删除撇号
$text = str_replace("'","", html_entity_decode($text, ENT_QUOTES)); 

答案 2 :(得分:4)

&#039表示撇号的HTML实体编码,即htmlspecialchars($text, ENT_QUOTES)。您可以检查两种情况:

$text = "hey this is ' a couple of ' apostrophes with an encoding '";
$text = preg_replace('/&#0*39;|\'/', '', $text);

// outputs: hey this is  a bunch of  apostraphes
echo $text;

你也可以坚持使用str_replace()等效物(往往跑得更快):

$text = "hey this is ' a couple of ' apostrophes with an encoding '";
$text = str_replace(array("'", "'"), '', $text);

// outputs: hey this is  a bunch of  apostraphes
echo $text;

答案 3 :(得分:2)

除了其他答案,您可能还想检查 unicode 表示吗?

$result = preg_replace('/([\'\x{0027}]|')/u', '', $subject);

答案 4 :(得分:1)

如何使用string_replace,这不需要正则表达式。

$sText = preg_match("'", "", $sText);

话虽如此,下面的代码片段与5.3中的假设一样:

$text = "woo't";
$text = preg_replace('/\'/', '', $text);
echo $text; // woot

答案 5 :(得分:0)

遇到了同样的问题,这是由于从MS单词粘贴了文本,而该单词具有自己独特的格式

解决方案是先将其和其他怪异的字符替换为可以通过preg_replace或str_replace捕获的内容,以下功能将帮助您解决此问题:

function msword_conversion($str)
{
    $str = str_replace(chr(130), ',', $str);    // baseline single quote
    $str = str_replace(chr(131), 'NLG', $str);  // florin
    $str = str_replace(chr(132), '"', $str);    // baseline double quote
    $str = str_replace(chr(133), '...', $str);  // ellipsis
    $str = str_replace(chr(134), '**', $str);   // dagger (a second footnote)
    $str = str_replace(chr(135), '***', $str);  // double dagger (a third footnote)
    $str = str_replace(chr(136), '^', $str);    // circumflex accent
    $str = str_replace(chr(137), 'o/oo', $str); // permile
    $str = str_replace(chr(138), 'Sh', $str);   // S Hacek
    $str = str_replace(chr(139), '<', $str);    // left single guillemet
// $str = str_replace(chr(140), 'OE', $str);   // OE ligature
    $str = str_replace(chr(145), "'", $str);    // left single quote
    $str = str_replace(chr(146), "'", $str);    // right single quote
// $str = str_replace(chr(147), '"', $str);    // left double quote
// $str = str_replace(chr(148), '"', $str);    // right double quote
    $str = str_replace(chr(149), '-', $str);    // bullet
    $str = str_replace(chr(150), '-–', $str);    // endash
    $str = str_replace(chr(151), '--', $str);   // emdash
// $str = str_replace(chr(152), '~', $str);    // tilde accent
// $str = str_replace(chr(153), '(TM)', $str); // trademark ligature
    $str = str_replace(chr(154), 'sh', $str);   // s Hacek
    $str = str_replace(chr(155), '>', $str);    // right single guillemet
// $str = str_replace(chr(156), 'oe', $str);   // oe ligature
    $str = str_replace(chr(159), 'Y', $str);    // Y Dieresis
    $str = str_replace('°C', '&deg;C', $str);    // Celcius is used quite a lot so it makes sense to add this in
    $str = str_replace('£', '&pound;', $str);
    $str = str_replace("'", "'", $str);
    $str = str_replace('"', '"', $str);
    $str = str_replace('–', '&ndash;', $str);

    return $str;
} 

来源:https://www.php.net/manual/en/function.str-replace.php