Lấy ngẫu nhiên 1 đoạn paragraph từ 1 string (trong PHP)
Sau một hồi thử nghiệm
$string = '<p>Coca-cola được thành lập vào ... </p>
<p>Coca-cola vị nguyên bản có thành phần chủ yếu là .... </p>
<p>Coca-cola ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. </p>';
$pattern = '|<p>(.+?)</p>|';
if(preg_match_all($pattern, $string, $matches)) {
shuffle($matches[0]);
echo $matches[0][0];
}
Trên thực tế, $string thường dính lẫn các paragraph không có text, tức là <p></p>
hoặc <p> </p>
nên phải làm thêm bước đệm là loại <p> </p>
ra khỏi string ban đầu.
Cách include ngẫu nhiên vài trang PHP trong 1 trang PHP chính?
Qua test thử nghiệm, bạn có thể sắp xếp một array
$input = array("a.php", "b.php","c.php", "d.php", "e.php");
Sau đó có thể dùng hàm array_rand hoặc shuffle.
shuffle($input);
echo $input[0];
echo $input[1];
Mình phát hiện ra có sự khác nhau nhỏ giữa 2 hàm này. array_rand sẽ cho kết quả có thứ tự, ví dụ: a.php và d.php, hoặc b.php và e.php (nghĩa là A sẽ luôn xuất hiện trước B, C, D, E...) shuffle thì ngẫu nhiên hoàn toàn vì nó thay đổi vị trí các element trong array ngay từ đầu.
Cách thêm chữ vào vị trí dấu nhắc đánh chữ khi bấm vào nút trong Javascript
Đã có giải pháp cho vấn đề này https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement
Script:
<script type="text/javascript">
function insertMetachars(sStartTag, sEndTag) {
var bDouble = arguments.length > 1, oMsgInput = document.myForm.myTxtArea, nSelStart = oMsgInput.selectionStart, nSelEnd = oMsgInput.selectionEnd, sOldText = oMsgInput.value;
oMsgInput.value = sOldText.substring(0, nSelStart) + (bDouble ? sStartTag + sOldText.substring(nSelStart, nSelEnd) + sEndTag : sStartTag) + sOldText.substring(nSelEnd);
oMsgInput.setSelectionRange(bDouble || nSelStart === nSelEnd ? nSelStart + sStartTag.length : nSelStart, (bDouble ? nSelEnd : nSelStart) + sStartTag.length);
oMsgInput.focus();
}
</script>
Form:
<form name="myForm">
<p><span onclick="insertMetachars('Hello');">Son Goku</span> </p>
<p><textarea name="myTxtArea" rows="10" cols="50">Alibaba và 40 bà vợ</p></form>
Cách xử lý array trường hợp này trong PHP
Mình tự có câu trả lời:
$count = COUNT($array) - 3;
list( $first, $second, $third) = $array;
echo $first . ', ' . $second . ', ' . $third.' và '.$count .' người khác.';
Tổ chức
Chưa có tổ chức nào.