我这里有一个简单的问题。我知道有一个非常简单的解决方案,但我无法弄清楚。所以我从用户那里得到文本输入并将它们存储在一个数组中,现在的问题是如果文本中有逗号,
,它会弄乱数组。
例如,如果用户输入:
Proin tincidunt velit turpis. Ut eu tempus tellus, vel dapibus sem ultrices sollicitudin justo lorem sit amit. Donec nec risus vulputate
输出为:
vel dapibus sem ultrices sollicitudin justo lorem sit amit. Donec nec risus vulputate
以下是我正在使用的代码:
$descText = explode( ",", $atts['desc'] );
// Store the descriptions in $textArray array.
foreach ($descText as $desc) {
$textArray[] = $desc;
}
更新
所以我在$descText
中收到了来自用户的三个输入,所以如果其中任何一个输入中包含一个逗号,
,那么它会忽略句子的其余部分。
答案 0 :(得分:3)
您所说的是用户可以输入以逗号分隔的字符串。如果其中一个字符串包含逗号,则它也会在该逗号上拆分,并且您不希望这样。
您需要使用不能出现在字符串中的其他分隔符,或者您需要转义特殊字符,例如使用\
。例如,如果您有以下字符串:
Hello, bye
Hello world
你会逃脱逗号,然后合并它们:
Hello\, bye,Hello world
然后您可以使用preg_split(..)
分割它们。
$a = "Hello\, bye,Hello world";
$b = preg_split( '/(?<!\\\\),/', $a );
var_dump( $b );
将作为输出:
array(2) {
[0]=>
string(11) "Hello\, bye"
[1]=>
string(11) "Hello world"
}
答案 1 :(得分:1)
好的,最后我已经从问题中恢复过来了。我正在寻找的实际解决方案并不多,但它可以完成工作。以下是该问题的问题和解决方案。希望它可以帮助别人。
问题:
我创建了一个WordPress短代码,其中我得到了两个东西,一个音频链接和描述。这两个参数都包含三个逗号分隔的参数。所以它会是这样的:
[shortcode audio="one, two, three" desc="one, two, three"]
要在一个变量中获取多个参数,我必须使用explode()
以便它可以分开。现在,如果其中一个desc包含逗号,
,那么它将被处理为不同的参数。所以以下为我创造了问题
[shortcode audio="one, two, three" desc="The text, The,text , The text"]
注意desc变量中的第二个参数。它包含一个额外的逗号,因此将进程作为单独的参数。
解决方案:
解决方案不是完美的解决方案,但它完成了工作。我做的是我取代了&#39;,&#39;分隔符为&#39; *&#39;所以现在我的短代码看起来像这样:
[shortcode audio="one * two * three" desc="The text * The,text * The text"]
守则:
function header_custom_box($atts) {
$atts = shortcode_atts( array( 'audio' => '', 'desc' => ''), $atts, 'header-custom-box' );
// Create Empty Arrays to store differnt mp3 links and descriptions.
$posts = array();
$audioArray = array();
$textArray = array();
$postCount = 3;
// Load the Parameters
$audioFiles = explode( "*", $atts['audio'] );
$descText = explode( "*", $atts['desc'] );
// Break if the parameters values are less than required.
if ( count($audioFiles) < $postCount || count($descText) < $postCount) {
echo "You need to provide atleast three links and descriptions. Please check the shortcode again!";
exit;
}
// Create audio with mp3 files in WordPress
foreach ($audioFiles as $audioFile) {
$attr = array(
'src' => trim($audioFile),
'loop' => '',
'autoplay' => '',
'preload' => 'none'
);
$audioArray[] = wp_audio_shortcode( $attr );
}
// Store the descriptions in $textArray array.
foreach ($descText as $desc) {
$textArray[] = trim($desc);
}
// Format the post in HTML and store them in $posts array.
$counter = 0;
$buf = '';
while ($counter < $postCount) {
$buf = '';
$buf .= '<div class="header-tab-box">';
$buf .= '<div class="audio-text"><h2>Your Daily Audio:</h2> <br/>';
$buf .= $textArray[$counter];
$buf .= '</div>';
$buf .= '<div class="audio-player">';
$buf .= $audioArray[$counter];
$buf .= '</div>';
$buf .= '</div>';
$posts[$counter] = $buf;
$counter++;
}
// Scheduling the returned posts.
$currentDay = date("D");
$postOne = $posts[0];
$postTwo = $posts[1];
$postThree = $posts[2];
if ($currentDay == "Sat" || $currentDay == "Sun" || $currentDay == "Mon" || $currentDay == "Tue") {
return $postOne;
} elseif ($currentDay == "Wed" || $currentDay == "Thu") {
return $postTwo;
} elseif ($currentDay == "Fri" ) {
return $postThree;
}
}
add_shortcode( 'header-custom-box', 'header_custom_box' );
希望这有帮助!
谢谢大家..