Php Regex用于查找和替换Indic字符
我有一个文本文件如下Php Regex用于查找和替换Indic字符,php,regex,Php,Regex,我有一个文本文件如下 {{https://www.test.com/events/test-event-२०१८/२०१८-.१-entry-list|caption=test event of २०१८}}{{https://www.test.com/events/test-event-३१/३१-.१-entry-list|caption=test event of ३१}}{{https://www.test.com/events/test-event-१८/१८-.१-entry-lis
{{https://www.test.com/events/test-event-२०१८/२०१८-.१-entry-list|caption=test event of २०१८}}{{https://www.test.com/events/test-event-३१/३१-.१-entry-list|caption=test event of ३१}}{{https://www.test.com/events/test-event-१८/१८-.१-entry-list|caption=test event of १८}}
<?php
$pattern = "/\/([२]+)\//u";
$text=file_get_contents("Test.txt");
$text = preg_replace($pattern,'2',$text);
file_put_contents("MR-Test.txt",$text);
?>
我想将所有印度字符的实例仅在URL中而不是标题中更改为其英语等效字符
例如:२ 变成2,依此类推。我正在尝试编写一个正则表达式,它将替换URL“/”之间的所有实例。到目前为止运气不好
我的代码如下
{{https://www.test.com/events/test-event-२०१८/२०१८-.१-entry-list|caption=test event of २०१८}}{{https://www.test.com/events/test-event-३१/३१-.१-entry-list|caption=test event of ३१}}{{https://www.test.com/events/test-event-१८/१८-.१-entry-list|caption=test event of १८}}
<?php
$pattern = "/\/([२]+)\//u";
$text=file_get_contents("Test.txt");
$text = preg_replace($pattern,'2',$text);
file_put_contents("MR-Test.txt",$text);
?>
到目前为止似乎什么都不管用
编辑:我正在使用的url位于文本文件中,我必须仅替换url中的索引文本,而不替换其他位置。我们所需的
२代码>首先出现,我们收集它,然后收集不需要的२代码>使用交替:
(२)|(caption=(.+?)}})
最后,我们将用2
和$2
来代替它
试验
输出
下面是一种使用preg_replace_回调执行此操作的方法,首先找到要替换的正确数字,然后在回调中替换它们:
$text = '{{https://www.test.com/events/test-event-२०१८/२०१८-.१-entry-list|caption=test event of २०१८}}{{https://www.test.com/events/test-event-३१/३१-.१-entry-list|caption=test event of ३१}}{{https://www.test.com/events/test-event-१८/१८-.१-entry-list|caption=test event of १८}}';
$res = preg_replace_callback('/caption=.+?}}(*SKIP)(*F)|[०१२३४५६७८९]/u',
function($m) {
return preg_replace(
array('/०/','/१/','/२/','/३/','/४/','/५/','/६/','/७/','/८/','/९/'),
array('0','1','2','3','4','5','6','7','8','9'),
$m[0]);
}
, $text);
echo $res,"\n";
输出:
{{https://www.test.com/events/test-event-2018/2018-.1-entry-list|caption=test event of २०१८}}{{https://www.test.com/events/test-event-31/31-.1-entry-list|caption=test event of ३१}}{{https://www.test.com/events/test-event-18/18-.1-entry-list|caption=test event of १८}}
caption=.+?}} # matches caption until }}
(*SKIP)(*F) # and skip that match
| # OR
[०१२३४५६७८९] # 1 digit
说明:
{{https://www.test.com/events/test-event-2018/2018-.1-entry-list|caption=test event of २०१८}}{{https://www.test.com/events/test-event-31/31-.1-entry-list|caption=test event of ३१}}{{https://www.test.com/events/test-event-18/18-.1-entry-list|caption=test event of १८}}
caption=.+?}} # matches caption until }}
(*SKIP)(*F) # and skip that match
| # OR
[०१२३४५६७८९] # 1 digit
已尝试$text=str\u替换('२', '2',$text)
还没有?$text=strtr($text,array($text)२' => '2' ) );
也可以工作,您可以根据需要将任意多个替换项加载到该数组中。所述文本位于文本文件中的大量URL中。。我必须在“/”之间搜索,除了url@PrashantShirsat好吧,那你为什么说我们的建议失败了?你在找什么?请注意,仍可能出现误报。一个样本不足以生成一个健壮的模式谢谢!但是我不想改变标题。。只有网址!内容变为“/测试事件”०१८०१८-.१-条目列表“预期位置”/“测试-事件-2”०१८/2.०१८-.१-参赛名单“!