نمایش قسمتی از متن و پاراگراف با PHP
انتخاب و نمایش قسمتی از متن و پاراگراف یکی از نیازهایی است که معمولا در طراحی امکانات صفحات وب کاربردهای زیادی دارد، به طور مثال برای ایجاد قابلیت پیش نمایش محتوای دریافت شده از پرس و جوهای دیتابیس، نمایش خلاصه متن و پاراگراف در فرم های وب، نمایش قسمتی از نتیجه در هنگام جستجو در مطالب سایت، محدود کردن نمایش محتوای در اختیار کاربران با سطح دسترسی های متفاوت و موارد مشابه دیگری این امکان مورد استفاده قرار می گیرد، خوشبختانه نمایش قسمتی از متن و پاراگراف بسته به شرایط و نیاز طراح سایت به چند شیوه مختلف چه از طریق برنامه نویسی PHP یا در هنگام اجرای پرس و جوهای دیتابیس با دستورات و توابع درونی MySQL قابل انجام است که در این آموزش در حد امکان به تفصیل هر کدام از این روش ها را بررسی می کنیم.
نمایش قسمتی از متن به صورت شمارش کلمه
یکی از روش های نمایش قسمتی از متن یا پاراگراف تعیین تعداد و میزان کلماتی است که قصد داریم در خروجی نمایش داده شوند، برای انجام این کار در PHP می توانیم از ترکیب سه تابع explode ، implode و array_splice استفاده کنیم که در نمونه کد زیر این سه تابع را در بدنه یک تابع و به ترتیب تعریف کرده ایم:
<?php
function limitWord($string, $limit){
$words = explode(" ", $string);
$output = implode(" ", array_splice($words, 0, $limit));
return $output;
}
?>برای فراخوانی تابع کافی است پاراگراف مورد نظر را در یک متغیر تعریف و متغیر را (به عنوان آرگیومنت اول) به همراه تعداد کلمات مورد نظر (به عنوان آرگیومنت دوم) و به صورت زیر فراخوانی کنیم:<?php
$string = "آموزش کاربردی پی اچ پی نمایش قسمتی از متن و پاراگراف";
echo limitWord($string, 5);
?>به این صورت با اجرای کدهای PHP در خروجی صفحه تنها 5 کلمه اول از مقادیر متغیر فرضی string را خواهیم داشت.آموزش کاربردی پی اچ پیتوضیح:- تابع explode با دریافت یک مقدار به عنوان جداکننده (در اینجا فضای خالی یا " ") از آرگیومنت اول، متن مورد نظر را که در آرگیومنت دوم تنظیم شده به صورت آرایه ای از کلمات تبدیل می کند (String to Array).
- در قسمت بعدی برنامه تابع implode مجددا عناصر آرایه را به رشته متنی تبدیل می کند (Array to String)، البته در اینجا استفاده از array_splice باعث می شود که تنها تعداد کلمات محدودی از متن مورد نظر به خروجی ارسال شوند که این تعداد در متغیر limit (آرگیومنت دوم) مشخص شده است.
نکته: برای محاسبه تعداد کلمات موجود در آرایه می توانیم از تابع sizeof یا count هم در PHP استفاده کنیم که ممکن است برای توسعه کد در شرایط متفاوت مورد نیاز باشد:
<?php
$string = "آموزش کاربردی پی اچ پی نمایش قسمتی از متن و پاراگراف";
$words = explode(" ", $string);
echo sizeof($words);
echo '<br>';
echo count($words);
?>خروجی دستورات بالا به صورت زیر است:11
11به این شیوه می توانیم برنامه هوشمندتری داشته باشیم به فرض تنها اگر تعداد کلمات یک متن از مقادیر مورد نظرمان بیشتر بود قسمت array_splice اجرا شود و یا ایده های متنوع دیگری که ممکن است به ذهن برنامه نویس برسد.نمایش قسمتی از متن به صورت شمارش حروف
روش دیگر برای انتخاب و نمایش قسمتی از متن و پاراگراف، شمارش حروفی است که تمایل داریم به همان تعداد به خروجی ارسال شوند، برای انجام این کار می توانیم از تابع substr و برای حروف فارسی از mb_subsrt استفاده کنیم، به طور مثال در کد زیر تعداد 22 حرف اول از نمونه متنی که قبلا بررسی کردیم را با این روش استخراج کرده و به خروجی می فرستیم:
<?php
$string = "آموزش کاربردی پی اچ پی نمایش قسمتی از متن و پاراگراف";
echo mb_substr($string, 0, 22, mb_detect_encoding($string));
?>خروجی نمونه کد بالا به صورت زیر خواهد بود:آموزش کاربردی پی اچ پیدر حال حاضر تابع substr تنها از استاندارد ASCII پشتیبانی می کند و برای کلمات فارسی که از استاندارد UTF-8 پیروی می کنند چندان کاربردی نیست چون هر حرف فارسی در تابع substr دو کاراکتر (Multibyte) حساب شده و به همین دلیل گاهی مواقع خروجی ناقص و غیر استاندارد در انتهای متن مورد نظر چاپ می شود، به فرض:آموزش کاربر�همان طور که گفتیم این موضوع مربوط به ساز و کار یونیکد زبان فارسی است که هر حرف متشکل از دو بایت است اما تابع substr حروف را بر اساس شمارش هر بایت تجزیه می کند و این منجر به بروز مشکل می شود، برای رفع مشکل بهتر است از تابع mb_substr و mb_detect_encoding مطابق با نمونه بالا استفاده کنیم.نمایش قسمتی از متن و پاراگراف در MySQL
علاوه بر روش های بالا که صرفا متکی بر دستورات و توابع زبان برنامه نویسی PHP هستند، در سیستم مدیریت پایگاه داده MySQL و به هنگام اجرای پرس و جو (Query) نیز این امکان وجود دارد که بتوانیم نتایج را به تعداد حروف یا کلمات خاصی محدود کنیم، در ادامه با دو تابع SUBSTRING و SUBSTRING_INDEX آشنا خواهیم شد.
شمارش حروف با تابع SUBSTRING در MySQL
مانند آنچه در مورد برنامه نویسی کدهای PHP گفتیم در MySQL هم به دو روش شمارش حروف و شمارش کلمه می توانیم تعداد کاراکترها یا عبارات خروجی را به عدد خاصی محدود کنیم، برای شمارش حروف از تابع SUBSTRING به شکل نمونه زیر استفاده می کنیم:
mysqli_query($conn, "SELECT id, SUBSTRING(col_name, 1, 30) AS col_name FROM tbl_name ORDER BY id DESC LIMIT 1");در مثال بالا با استفاده از تابع درونی SUBSTRING در MySQL از جدول فرضی tbl_name، ستون col_name کاراکترهای 1 تا 30 را انتخاب کرده ایم، البته این تابع نیز نسبت به حروف فارسی در مقایسه با حروف انگلیسی رفتاری متفاوت دارد و روشی که در ادامه خواهیم گفت برای زبان فارسی مناسبتر است.شمارش کلمه با تابع SUBSTRING_INDEX در MySQL
در اغلب مواقع صرف شمارش حروف ایدآل نیست و معمولا کاراکترهای ناقص یا اضافه در خروجی خواهیم داشت، طراحان و برنامه نویسان وب عموما به دنبال راه حلی جهت شماره کلمه به کلمه هستند که برای این منظور در MySQL تابع SUBSTRING_INDEX به شکل نمونه زیر قابل استفاده است:
mysqli_query($conn, "SELECT id, SUBSTRING_INDEX(col_name, ' ', 30) AS col_name FROM tbl_name ORDER BY id DESC LIMIT 1");در مثال بالا با استفاده از تابع درونی SUBSTRING_INDEX در MySQL از جدول فرضی tbl_name، ستون col_name تعداد 30 کلمه اول را انتخاب کرده ایم، خوشبختانه این روش با حروف فارسی سازگار است چون مبنای کار تابع بررسی فضای خالی (' ' در آرگیومنت دوم) بین کلمات است.دسته بندی: آموزش کاربردی » PHP
ساخت فید خوان آر اس اس (RSS Feed Reader) با PHP
ارسال پارامتر به URL و دریافت مقادیر با PHP
آموزش ساخت نقشه XML سایت (Sitemap) با PHP و MySQL
ساخت منوی هوشمند با PHP و CSS
نحوه نمایش متن و تصاویر اتفاقی در PHP و MySQL
دیدگاه
محمود
۱۱:۱۰ ۱۳۹۷/۰۴/۰۲
سلام و احترام
از راهنمایی هایتان بسیار سپاسگزار هستم.
همانطور که اشاره کردید سعی و تلاش خودم را می کنم از سایت پر بار شما استفاده و ایدۀ خودم را کامل کنم. در هر حال شما نقش بر جسته ای در یادگیری و حل مشکل من داشتید.
باز هم تشکر می کنم .
از راهنمایی هایتان بسیار سپاسگزار هستم.
همانطور که اشاره کردید سعی و تلاش خودم را می کنم از سایت پر بار شما استفاده و ایدۀ خودم را کامل کنم. در هر حال شما نقش بر جسته ای در یادگیری و حل مشکل من داشتید.
باز هم تشکر می کنم .
محمود
۱۰:۳۹ ۱۳۹۷/۰۴/۰۱
سلام و وقت بخیر
اینو بدونین که قلب بزرگی دارین و برای راهنمایی و کد های بالا بسیار متشکر هستم.
کدهایی که با های لایت متن را برای پرینت انتخاب می کرد خیلی بهتر است و البته برای کار من در زیر یک نمونه از صفحه که کدهای شما درونش است + کاری که میخواهم بکنم:
همانطور که می بینید با هر بار کلیک انتخاب متن ، یک جدول کامل ایجاد می شود نه یک سطر با سه ستون. همینطور با زدن علامت هر یک از چک باکس ها نمره در ستون نمره همان سوال درج شود و ردیف هم یک شماره به آن اضافه گردد. که می خواستم کمک بکنید.
خیلی خیلی تشکر دارم.
اینو بدونین که قلب بزرگی دارین و برای راهنمایی و کد های بالا بسیار متشکر هستم.
کدهایی که با های لایت متن را برای پرینت انتخاب می کرد خیلی بهتر است و البته برای کار من در زیر یک نمونه از صفحه که کدهای شما درونش است + کاری که میخواهم بکنم:
همانطور که می بینید با هر بار کلیک انتخاب متن ، یک جدول کامل ایجاد می شود نه یک سطر با سه ستون. همینطور با زدن علامت هر یک از چک باکس ها نمره در ستون نمره همان سوال درج شود و ردیف هم یک شماره به آن اضافه گردد. که می خواستم کمک بکنید.
خیلی خیلی تشکر دارم.
حذف شدکدنویسی این موارد پیچیدگی های خاص خودش را دارد و اگر با مباحث مقدماتی آشنا نباشید در هر مرحله به مشکل برمی خورید، در حالت انتخاب متن نمی توانید شماره سوال و نمره را به صورت جداگانه داشته باشید چون کل متن به صورت یکجا انتخاب می شود، شاید روش چک باکس گزینه بهتری باشد، نمونه کد با تغییرات:
<script type="text/javascript">
function getSelectionHtml(){
var html = "";
if(typeof window.getSelection != "undefined"){
var sel = window.getSelection();
if(sel.rangeCount){
var container = document.createElement("div");
for(var i = 0, len = sel.rangeCount; i < len; ++i){
container.appendChild(sel.getRangeAt(i).cloneContents());
}
html = container.innerHTML;
}
} else if(typeof document.selection != "undefined"){
if(document.selection.type == "Text"){
html = document.selection.createRange().htmlText;
}
}
return html;
}
function setPrintText(id, tbl, last){
var value = getSelectionHtml();
if(value == ''){
alert('Please Select Example Text!');
} else{
var table = document.getElementById(tbl);
var count = document.getElementById(last).value;
document.getElementById(last).value = parseInt(count) + 1;
var row = table.insertRow(count);
var cell_1 = row.insertCell(0);
var cell_2 = row.insertCell(1);
cell_1.innerHTML = count;
cell_2.innerHTML = value + ' - ' + count;
}
}
function doPrintText(id){
var elm = document.getElementById(id);
var mywindow = window.open('', 'Print', 'height=400, width=600');
mywindow.document.write('<html><head><title>' + document.title + '</title>');
mywindow.document.write('</head><body >');
mywindow.document.write('<h1>' + document.title + '</h1>');
mywindow.document.write(elm.innerHTML);
mywindow.document.write('</body></html>');
//IE >= 10
mywindow.document.close();
mywindow.focus();
mywindow.print();
mywindow.close();
return true;
}
</script>
<style type="text/css">
#foo{
border: #FF0004 1px solid;
padding: 8px;
margin: 8px;
}
#print{
border: #4D3EAC 1px solid;
padding: 8px;
margin: 8px;
}
</style>
<button onclick="setPrintText('print', 'tbl', 'last');">Add Text!</button>
<div id="foo">Example Text!</div>
<div id="print">
<table id="tbl" width="200" border="1">
<tbody>
<tr>
<th>ID</th>
<th>Text</th>
</tr>
</tbody>
</table>
</div>
<input name="last" id="last" type="hidden" value="1">
<button onclick="doPrintText('print');">Print Text!</button>محمود
۰۹:۵۰ ۱۳۹۷/۰۳/۳۰
سلام استاد گرامی
بسیار از راهنمایی شما متشکرم.
چگونه به جای های لایت کردن برای انتخاب متن ، از چک باکس استفاده کنم.
بسیار از راهنمایی شما متشکرم.
چگونه به جای های لایت کردن برای انتخاب متن ، از چک باکس استفاده کنم.
لطفا سعی کنید حداقل بخشی از کدها را بنویسید، در هر صورت نمونه کد زیر جهت راهنمایی بیشتر و به عنوان الگوی اولیه قابل استفاده است:
<script type="text/javascript">
function setPrintText(name, id){
var items = document.getElementsByName(name);
var div = '';
var value = '';
for(var i = 0; i < items.length; i++){
if(items[i].type == 'checkbox' && items[i].checked == true){
div = items[i].value;
value += document.getElementById(div).innerHTML + '<br>';
}
}
if(value == ''){
alert('Please Select Example Text!');
} else {
document.getElementById(id).innerHTML = '';
document.getElementById(id).innerHTML += value;
}
}
function doPrintText(id){
var elm = document.getElementById(id);
var mywindow = window.open('', 'Print', 'height=400, width=600');
mywindow.document.write('<html><head><title>' + document.title + '</title>');
mywindow.document.write('</head><body >');
mywindow.document.write('<h1>' + document.title + '</h1>');
mywindow.document.write(elm.innerHTML);
mywindow.document.write('</body></html>');
//IE >= 10
mywindow.document.close();
mywindow.focus();
mywindow.print();
mywindow.close();
return true;
}
</script>
<style type="text/css">
.foo{
display: inline-block;
border: #FF0004 1px solid;
padding: 8px;
margin: 8px;
}
#print{
border: #4D3EAC 1px solid;
padding: 8px;
margin: 8px;
}
</style>
<button onclick="setPrintText('foo[]', 'print');">Add Text!</button>
<br>
<input name="foo[]" id="checkbox-1" type="checkbox" value="foo-1"><div id="foo-1" class="foo">Example Text 1!</div>
<br>
<input name="foo[]" id="checkbox-2" type="checkbox" value="foo-2"><div id="foo-2" class="foo">Example Text 2!</div>
<div id="print"></div>
<button onclick="doPrintText('print');">Print Text!</button>محمود
۱۰:۵۸ ۱۳۹۷/۰۳/۲۸
سلام
ممنون از راهنمایی.
اگر امکان دارد یک راهنمایی در مورد ساخت دکمه برای افزودن متن به بلاک div انجام بدید.
من کد های زیر را از وب سرچ کرده و پیدا کردم که فقط یک متن را ظاهر یا مخفی میکند ولی نمی دانم می شود از این استفاده کرد یا نه و یا چگونه متن را در بلاک div خاصی ظاهر کنم.
ممنون از راهنمایی.
اگر امکان دارد یک راهنمایی در مورد ساخت دکمه برای افزودن متن به بلاک div انجام بدید.
من کد های زیر را از وب سرچ کرده و پیدا کردم که فقط یک متن را ظاهر یا مخفی میکند ولی نمی دانم می شود از این استفاده کرد یا نه و یا چگونه متن را در بلاک div خاصی ظاهر کنم.
حذف شدبا تشکربرای انجام این کار باید اسکریپت اختصاصی بنویسید، استفاده از کدهای آماده به تنهایی کافی نیست، در هر صورت نمونه کد زیر متن انتخاب (Highlight) شده را در یک بلاک div جهت ارسال برای چاپ قرار می دهد:
<script type="text/javascript">
function getSelectionHtml(){
var html = "";
if(typeof window.getSelection != "undefined"){
var sel = window.getSelection();
if(sel.rangeCount){
var container = document.createElement("div");
for(var i = 0, len = sel.rangeCount; i < len; ++i){
container.appendChild(sel.getRangeAt(i).cloneContents());
}
html = container.innerHTML;
}
} else if(typeof document.selection != "undefined"){
if(document.selection.type == "Text"){
html = document.selection.createRange().htmlText;
}
}
return html;
}
function setPrintText(id){
var value = getSelectionHtml();
if(value == ''){
alert('Please Select Example Text!');
} else{
document.getElementById(id).innerHTML += value + '<br>';
}
}
function doPrintText(id){
var elm = document.getElementById(id);
var mywindow = window.open('', 'Print', 'height=400, width=600');
mywindow.document.write('<html><head><title>' + document.title + '</title>');
mywindow.document.write('</head><body >');
mywindow.document.write('<h1>' + document.title + '</h1>');
mywindow.document.write(elm.innerHTML);
mywindow.document.write('</body></html>');
//IE >= 10
mywindow.document.close();
mywindow.focus();
mywindow.print();
mywindow.close();
return true;
}
</script>
<style type="text/css">
#foo{
border: #FF0004 1px solid;
padding: 8px;
margin: 8px;
}
#print{
border: #4D3EAC 1px solid;
padding: 8px;
margin: 8px;
}
</style>
<button onclick="setPrintText('print');">Add Text!</button>
<div id="foo">Example Text!</div>
<div id="print"></div>
<button onclick="doPrintText('print');">Print Text!</button>محمود
۱۰:۲۰ ۱۳۹۷/۰۳/۲۶
با سلام و احترام
چگونه می توانم متن دلخواهی را در محل مخصوصی از همان صفحه وب کپی کنم و سپس آن را چاپ بکنم.
در حقیقت من می خواهم از متن های متفاوتی که در یک پست نوشته شده است مثلاً چند تا سوال ، چند تا از انها را انتخاب و به همان شکل در یک جدول بصورت مرتب کپی و سپس آن را پرینت کنم .
چگونه می توانم متن دلخواهی را در محل مخصوصی از همان صفحه وب کپی کنم و سپس آن را چاپ بکنم.
در حقیقت من می خواهم از متن های متفاوتی که در یک پست نوشته شده است مثلاً چند تا سوال ، چند تا از انها را انتخاب و به همان شکل در یک جدول بصورت مرتب کپی و سپس آن را پرینت کنم .
سوالتان کلی است و پاسخ کوتاهی ندارد!، در وب اینگونه موارد با کدنویسی جاوا اسکریپت انجام می شود، قاعدتا باید رابط کاربری برای این کار تعریف شود که به فرض با انتخاب هر گزینه، متن با فرمت مد نظر در یک بلاک div آماده چاپ شود و یک دکمه نیز برای چاپ داشته باشیم.
رامین
۱۴:۳۲ ۱۳۹۶/۱۱/۱۸
سلام من میخوام متنی تصادفی که داده شد ای دی داخل متن بود را پیدا کنه و با آی دی که مد نظرم است جایگزین کنه مثلا
این یک متن تستی @aaaaaaaaaa است@aaaaaaaaaa با @bbbbbbbجایگزین بشه و متن جدیداین یک متن تستی @bbbbbbb استتغییر پیدا کنهبرای این منظور باید با دستورات و عبارات باقاعده (Regular Expressions) آشنا باشید و از توابعی مانند preg_replace در PHP استفاده کنید، مثال:
<?php
$str = 'این یک متن تستی @aaaaaaaaaa است';
$str = preg_replace('/(\@[a-z0-9]+)/i', '@bbbbbbb', $str);
echo $str;
?>pm
۰۳:۲۵ ۱۳۹۶/۰۷/۱۴
سلام چطور میشه که بخشی از یک api رو برداریم یا یک سایتی لیستی قرار داده اون لیست رو برداریم یا api های که شلوغ هستن رو اون چیزهای رو که داره رو ازش بگیریم
status "ok"
data
proxies
0
ip "5.135.116.90"
port "8080"
country_code "FR"
response_time "fast"
type "elite"
supports
0 "get"
1 "cookie"
2 "referer"
3 "useragent"
protocols
0 "http"
1 "https"فرض کنیم این فقط ip و port مثلا میخوایم یا چیزای دیگشو چطور کنیم که فقط اونو بهمون نشون بده و مرتب و منظمبرای تجزیه خروجی API ابتدا باید ببینیم این خروجی با چه فرمتی ارائه می شود، ممکن است به صورت JSON یا متن ساده باشد، اگر به صورت JSON باشد باید از توابعی مانند json_decode استفاده کنیم:
http://php.net/manual/en/function.json-decode.phpاگر هم به صورت متن ساده باشد باید ببینیم از چه کلید تجزیه ای می توانیم استفاده کنیم، در مثال شما هر مقدار در یک خط جدید خروجی داده شده و لذا هر خط می تواند کلید تجزیه ما باشد، مقدار هر پارامتر نیز یا یک عدد است یا بین علامت های "" قرار دارد، به این ترتیب با استفاده از توابعی مانند preg_match_all می توانیم موارد دلخواه را استخراج کنیم:<?php
$output = 'status "ok"
data
proxies
0
ip "5.135.116.90"
port "8080"
country_code "FR"
response_time "fast"
type "elite"
supports
0 "get"
1 "cookie"
2 "referer"
3 "useragent"
protocols
0 "http"
1 "https"';
preg_match_all('/ip\s*"([^"]*)"/s', $output, $matches);
//print_r($matches);
echo $matches[1][0];
?>حسین قربان شیرودی
۲۰:۱۵ ۱۳۹۶/۰۷/۰۸
سلام
من میخوام یک سایت راه اندازی کنم.
در مورد curl مشکل دارم یعنی بلد نیستم
1 -میخوام قیمت یک محصول از سایت دیگر در سایت من نشون بده همون محصول.
2 - در مورد پرداخت آنلاین با curl در سایت دیگه و برگشت به سایت خودم.
3 - در مورد دریافت مختصات کاربر و جاگذاری در نقشه به جای مختصات قبلی.
اگه کسی میتونه کمک کنه لطفا جواب بدین
ممنون.
من میخوام یک سایت راه اندازی کنم.
در مورد curl مشکل دارم یعنی بلد نیستم
1 -میخوام قیمت یک محصول از سایت دیگر در سایت من نشون بده همون محصول.
2 - در مورد پرداخت آنلاین با curl در سایت دیگه و برگشت به سایت خودم.
3 - در مورد دریافت مختصات کاربر و جاگذاری در نقشه به جای مختصات قبلی.
اگه کسی میتونه کمک کنه لطفا جواب بدین
ممنون.
متاسفانه در حال حاضر سفارشات پذیرفته نمی شود، هر کدام از موارد مطرح شده یک بحث تخصصی است و در صورت عدم آشنایی باید به برنامه نویس مسلط رجوع کنید.
احمد
۲۲:۰۷ ۱۳۹۶/۰۱/۱۹
مررررسی خیلی خوب بود، برای حروف فارسی میشه از تابع mb_string استفاده کرد به شرطی که آرگومان سومش رو "UTF-8" قرار بدیم.
بسیار ممنون از اشتراک گذاری، مطلب اصلاح شد.
محمد
۱۴:۴۷ ۱۳۹۵/۱۲/۱۵
با سلام و خسته نباشی
در مورد preg_match مثال خوبی زدید که میشد با داشتن یه کلاس به محتوای تگ div دسترسی پیدا کرد ولی من می خواستم به محتوای تگ <time> دسترسی پیدا کنم . چطور می تونم محتوایی که تو این تگ در نظر گرفته شده و از مشخصه
در مورد preg_match مثال خوبی زدید که میشد با داشتن یه کلاس به محتوای تگ div دسترسی پیدا کرد ولی من می خواستم به محتوای تگ <time> دسترسی پیدا کنم . چطور می تونم محتوایی که تو این تگ در نظر گرفته شده و از مشخصه
itemprop="datePublished" هم برخورداره بهش دسترسی پیدا کنم . خودم از کد زیر استفاده کردم ولی خطا داد preg_match("/<time itemprop=\"datePublished\"[^>]*>(.*?)<\/time>/ims", $content, $match);کد تست شد، مشکلی وجود ندارد!
<?php
$content = '<div><time itemprop="datePublished">1</time></div>';
preg_match("/<time itemprop=\"datePublished\"[^>]*>(.*?)<\/time>/ims", $content, $match);
print_r($match);
?>باید ببینید محتوای ورودی به چه صورتی است، ممکن است نیاز به تابع preg_match_all باشد.كمال
۰۱:۵۶ ۱۳۹۵/۱۱/۲۸
سلام
در مورد اين كدي كه نوشتين:
مشكل كجاست؟
در مورد اين كدي كه نوشتين:
<?php
$content = file_get_contents('http://webgoo.ir');
$content = str_replace('<tr>', '', $content);
$title = preg_match("/<div class=\"footer-txt\"[^>]*>(.*?)<\\/div>/ims", $content, $match);
echo $match[1];
?>اينكه همه صفحه رو نشون ميده؟ نه فقط يه div خاصمشكل كجاست؟
کد مجددا تست شد، مشکلی دیده نشد و تنها متن داخل بلاک footer-txt نمایش داده می شود، جهت اطمینان کد را به همین صورت در یک فایل ساده PHP قرار داده و تست کنید!
فاطمه
۲۰:۳۰ ۱۳۹۵/۱۱/۱۸
سلام. میخام یه متن طولانیو پاراگرافشو تفکیک کنم از هم. میشه راهنمایی کنید
در گام نخست تابع explode راهکار مشکل مطرح شده است، اما این تابع نیاز به یک جدا کننده (delimiter) دارد، یعنی باید بین هر پاراگراف در متن مورد نظر، کاراکتری باشد که پاراگراف ها را بتوان از هم متمایز کرد، این کاراکتر می تواند تگ br در HTML یا مقادیر (نامرئی) r\n\ باشد، مثال:
<?php
$array = explode(PHP_EOL, $string);
foreach($array as $key => $value){
echo $key . ' => ' . $value . '<br>';
}
?>در صورتی که پاراگراف ها با تگ br جداسازی شده باشند، به جای PHP_EOL مقادیر تگ را قرار دهید، همچنین راه حل جایگزین دیگر استفاده از تابع preg_split است:$array = preg_split("/\\r\\n|\\r|\\n/", $string);هادی
۱۲:۱۵ ۱۳۹۵/۰۶/۲۵
سلام. برای explode کردن متن به صورت بخش های 3 کلمه ای باید چکار کرد ؟
مثلا :
آموزش کاربردی پی اچ پی نمایش قسمتی از متن و پاراگراف
این متن رو به صورت آرایه های زیر نشون بده :
آموزش کاربردی پی اچ پی
نمایش قسمتی از
متن و پاراگراف
با تشکر
مثلا :
آموزش کاربردی پی اچ پی نمایش قسمتی از متن و پاراگراف
این متن رو به صورت آرایه های زیر نشون بده :
آموزش کاربردی پی اچ پی
نمایش قسمتی از
متن و پاراگراف
با تشکر
تفکیک به این صورت نیازمند تعریف یک الگوی مشخص است، به طور مثال هر سه کلمه که جداسازی آنها با فضای خالی (یا هر کاراکتر دیگری) مشخص باشد، اما در مثال شما این الگوی ثابت وجود ندارد! به طور مثال اگر فضای خالی را بیانگر جداسازی کلمات بدانیم، خود کلمه "پی اچ پی" دو فضای خالی دارد و از نظر سیستم دو کلمه محسوب می شود، لذا توجه داشته باشید که تعریف قوانین انسانی برای ماشین نیازمند هوش مصنوعی و الگوریتم نویسی پیشرفته است، صرفا در حد یک کد معمولی:
<?php
$string = 'این یک تست است!';
$array = preg_split('/\s+/', $string);
//print_r($array);
$chunk = array_chunk($array, 3);
//print_r($chunk);
for($i = 0; $i < count($chunk); $i++){
for($a = 0; $a < count($chunk[$i]); $a++){
echo $chunk[$i][$a] . ' ';
}
echo '<br>';
}
?>حسین
۲۰:۴۱ ۱۳۹۵/۰۶/۰۸
خیلی خیلی ممنون واقعا سایت خوبی دارید
حسین
۲۲:۱۵ ۱۳۹۵/۰۲/۰۱
با سلام
معذرت می خوام که سوالو دوباره تکرار میکنم ولی واقعا دو هفته است که وقتمو گرفته و نتونستم مشکل رو حل کنم
اون جوری که گفته بودید با ++Notepad نه فقط اون صفحه بلکه تمامی صفحات سایتو حتی اونا ای که هیج ربطی به اون صفحه مورد نظر نداشت باز کردم و سیو بدون بوم کردم ولی هنوز هم نتونستم مشکل رو حل کنم آیا چیزی دیگه ای هست که بتونه مشکل من رو حل کنه
چون این کوکی هم برام خیلی مهمه برای امنیت نظرات میخوامش
معذرت می خوام که سوالو دوباره تکرار میکنم ولی واقعا دو هفته است که وقتمو گرفته و نتونستم مشکل رو حل کنم
اون جوری که گفته بودید با ++Notepad نه فقط اون صفحه بلکه تمامی صفحات سایتو حتی اونا ای که هیج ربطی به اون صفحه مورد نظر نداشت باز کردم و سیو بدون بوم کردم ولی هنوز هم نتونستم مشکل رو حل کنم آیا چیزی دیگه ای هست که بتونه مشکل من رو حل کنه
چون این کوکی هم برام خیلی مهمه برای امنیت نظرات میخوامش
در صورت تمایل می توانید برنامه TeamViewer را نصب و از طریق ایمیل (موجود در بخش تماس) اطلاع دهید تا جهت بررسی آنلاین مشکل در سیستم شما زمان تعیین گردد.
- به سوالات کلی، زمانبر، مبهم و مشکلاتی که تلاشی برای رفع آنها نکرده باشید پاسخ مختصر داده شده یا به بخش برنامه نویسی اختصاصی ارجاع داده می شوند.
- کدها و اسکریپت های طولانی را ترجیحا در یک صفحه وب آنلاین یا به صورت حساب موقت و آزمایشی قرار دهید تا امکان بررسی دقیق مشکل و خطایابی میسر باشد.
- تمام دیدگاه های ارسالی خوانده شده و برای هر کاربر مدت زمان لازم جهت پاسخگویی در نظر گرفته می شود، لطفا از طرح سوالات متعدد در بازه زمانی کوتاه خودداری کنید.