【发布时间】:2012-08-10 18:23:38
【问题描述】:
我知道有人问过before,但我仍然不明白为什么以下方法不起作用:
<?php
echo preg_replace('/(?:[?\p{L}]*\/)?(?:[?\w\-]*\/)?/', '$1', 'cafes/123456') . '<br />';
// '123456'
echo preg_replace('/(?:[?\p{L}]*\/)?(?:[?\w\-]*\/)?/', '$1', 'cafés/123456') . '<br />';
// 'café123456' where I expect 123456
echo preg_replace('/(?:[?\p{L}é]*\/)?(?:[?\w\-]*\/)?/', '$1', 'cafés/123456') . '<br />';
// '123456' thanks to the extra "é" after "\p{L}"
?>
\p{L} 不应该替换任何重音吗?
【问题讨论】:
-
建议:由于您的模式在内部使用
/,您应该使用一些分隔符,例如#。这减少了你必须做的逃跑量,并摆脱了\/\/\/\/倾斜牙签综合症。 -
你的代码对我显示 123456 三次。