Php 在URL中发送阿拉伯文文本

Php 在URL中发送阿拉伯文文本,php,regex,Php,Regex,我有阿拉伯文文本,想在一个URL中发送,所以我使用了以下函数 $string = 'الغديات والعشيات" لن تنفع!'; $text = preg_replace('/[^\p{Arabic}\da-z-]/ui', '', $string); 输出: 此函数用于删除不需要的单词之间的空格 那么,如何避免删除这些空间呢?还有其他功能可以帮助我吗?试试这个: $string = 'الغديات والعشيات" لن تنفع!'; $string = str_repla

我有阿拉伯文文本,想在一个URL中发送,所以我使用了以下函数

$string = 'الغديات والعشيات" لن تنفع!';
$text = preg_replace('/[^\p{Arabic}\da-z-]/ui', '', $string);
输出:

此函数用于删除不需要的单词之间的空格

那么,如何避免删除这些空间呢?还有其他功能可以帮助我吗?

试试这个:

$string = 'الغديات والعشيات" لن تنفع!';
$string = str_replace(' ', 'ضضض', $string);  // save the space
$string = str_replace('!', 'ضضض', $string);  // save the  !
$string = preg_replace('/[^\p{Arabic}\da-z-]/ui', '', $string);//remove all none arabic char
$string = str_replace('ضضض', ' ', $string); // return space and "!"
echo $string;

这个不需要正则表达式。它的工作原理如下:

<?php
  echo '<a href="someplace?ss=', urlencode($string), '">';
?>

urlencode()
自动将空格保留为
%20

我使用了“rawurlencode”,它对我来说效果很好

$text = 'الغديات والعشيات" لن تنفع!';

<a href="http://example.com?text=<?php echo htmlspecialchars(rawurlencode($text)) ?>" >Go</a>
$text=';

不需要做任何其他事情。感谢大家的努力。

在URL中发送文本与空格和正则表达式有什么关系?如果它不能满足您的需要,为什么要使用该函数?使用函数我不知道它说了什么。您正在删除所有非
[\p{Arabic}\da-z-]
,因此空格通常会被删除…如果要避免此情况,必须将其添加到字符类中…它还将删除“!好的,preg_替换('/[^\p{Arabic}\da-z-]/ui',''$string);删除所有非阿拉伯字符和(!,*,#)等简单字符,因此我使用唯一字符串(该字符串不是阿拉伯单词,但有阿拉伯字母)替换所有空格和“!"